# Carga de Paquetes
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
# Carga de Datos
# Registros de presencia de Junco vulcani
junco_vulcani <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/junco_vulcani-cr-registros.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Asignación de CRS
st_crs(junco_vulcani) = 4326
#Cargando tabla de cantones
# Capa geespacial de cantones
cantones <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
quiet = TRUE
)
# Cruce espacial con la tabla de cantones, para obtener el nombre del cantón
junco_vulcani <-
junco_vulcani %>%
st_join(cantones["canton"])
El junco de los páramos (Junco vulcani) habita en zonas abiertas en elevaciones altas, usualmente por encima de los 3000 m. Suele posarse sobre el suelo en pequeños arbustos, generalmente en parejas o en grupos pequeños. Su rango es muy limitado: solo en Costa Rica o en el oeste de Panamá (eBird,junco vulcani).
# Tabla de registros de presencia
junco_vulcani %>%
st_drop_geometry() %>%
select(stateProvince, canton, locality, eventDate) %>%
datatable(
colnames = c("Provincia", "Cantón", "Localidad", "Fecha"),
options = list(searchHighlight = TRUE)
)
# Gráfico de área de estacionalidad
junco_vulcani %>%
st_drop_geometry() %>%
group_by(mes = format(as.Date(eventDate, "%Y-%m-%d"), "%m")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(mes)) %>%
plot_ly(x = ~ mes,
y = ~ suma_registros,
type="scatter", mode="markers", fill = "tozeroy", fillcolor = "green") %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Mes"),
yaxis = list(title = "Cantidad de registros"))
# Explorando otros tipos de graficos a partir de la sintaxis anterior
# Gráfico de barras de estacionalidad
junco_vulcani %>%
st_drop_geometry() %>%
group_by(mes = format(as.Date(eventDate, "%Y-%m-%d"), "%m")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(mes)) %>%
plot_ly(x = ~ mes,
y = ~ suma_registros,
type="bar") %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Mes"),
yaxis = list(title = "Cantidad de registros"))
junco_vulcani %>%
st_drop_geometry() %>%
group_by(anio = format(as.Date(eventDate, "%Y-%m-%d"), "%Y")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(anio)) %>%
filter(anio >= 2011) %>%
plot_ly(x = ~ anio,
y = ~ suma_registros,
type="bar", color = "green") %>%
layout(title = "Historial",
xaxis = list(title = "Año"),
yaxis = list(title = "Cantidad de registros"))
# Mapa de registros de presencia
junco_vulcani %>%
select(stateProvince,
canton,
locality,
eventDate,
decimalLongitude,
decimalLatitude) %>%
leaflet() %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addCircleMarkers(
stroke = F,
radius = 4,
fillColor = 'red',
fillOpacity = 1,
popup = paste(
junco_vulcani$stateProvince,
junco_vulcani$canton,
junco_vulcani$locality,
junco_vulcani$eventDate,
junco_vulcani$decimalLongitude,
junco_vulcani$decimalLatitude,
sep = '<br/>'
),
group = "Junco vulcani"
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
overlayGroups = c("Junco vulcani")
) %>%
addMiniMap(
tiles = providers$Stamen.OpenStreetMap.Mapnik,
position = "bottomleft",
toggleDisplay = TRUE
)